package dao;

import static dao.DAO.getAll;
import java.util.Vector;
import entidades.ReservaInmueble;

/**
 * Clase de la capa de Persistencia, encargada de recuperar, guardar
 * y actualizar Reservas de la base de datos.
 */
public class DAOReservaInmueble extends DAO {

    /**
     * Retorna el vector de objetos ReservaInmueble cargadas en la base de datos.
     *
     * @return El vector de objetos ReservaInmueble, null si no existe
     */
    public static Vector<ReservaInmueble> getAll() {
        return getAll("ReservaInmueble");
    }

    /**
     * Obtiene las reservas que realizo un mismo cliente
     * 
     * @param idCliente int     ID del Cliente
     * 
     * @return          Vector  Listado de reservas que realizó un cliente
     */
    public static Vector<ReservaInmueble> getByIdCliente(int idCliente) {
        return getAll("ReservaInmueble where cliente.idCliente = "+idCliente);
    }

    /**
     * Obtiene las reservas que se realizaron sobre un determinado inmueble
     * 
     * @param idInmueble    int     Identificador del inmueble
     * 
     * @return              Vector  Listado de reservas que tiene un inmueble
     */
    public static Vector<ReservaInmueble> getByIdInmueble(int idInmueble) {
        return getAll("ReservaInmueble where inmueble.idInmueble = "+idInmueble);
    }

    /**
     * Inserta (persiste) o Actualiza (si ya existía) una Reserva
     * @param rI    ReservaInmueble Reserva que se desea persistir
     * @return      boolean         true si fue exitoso, false en caso contrario
     */
    public static boolean insertOrUpdate(ReservaInmueble rI) {
        return guardarOActualizarObjeto(rI);
    }

    /**
     * Elimina (borra) una Reserva de la base de datos
     * @param rI    ReservaInmueble La reserva que se desea eliminar
     * @return      boolean         True si fue exitosa la operación, false en caso contrario
     */
    public static boolean delete(ReservaInmueble rI) {
        
        return eliminarObjeto(rI);
    }
}
